package com.wangdong.mijiqiqi;

import android.content.Context;
import android.os.Environment;

import com.wangdong.mybaseactivity.twotype.Constant;
import com.wangdong.mybaseactivity.utils.ClientUtils;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 配置管理
 * 
 * @author zhou
 * 
 */
public class ConfigManager {

	/** 本类实例 **/
	private static ConfigManager instance;

	private final static String PROP_FILE_NAME = "lib_network.properties";

	private ConfigManager() {
	};

	/**
	 * 获取实例
	 * 
	 * @return
	 */
	public synchronized static ConfigManager getInstance() {
		if (instance == null) {
			instance = new ConfigManager();
		}
		return instance;
	}

	/** 客户端信息 **/
	private ClientInfo mClientInfo;

	/**
	 * 初始化客户端信息
	 * 
	 * @param context
	 */
	public void initClientInfo(Context context) {
		//这个需要获取SD卡权限,获取外置存储根目录 + "/",File.separator表示在不同系统下都是"/"
		String env = Environment.getExternalStorageDirectory()
				.getAbsolutePath() + File.separator;

		mClientInfo = new ClientInfo();//创建手机信息javaBaen类
		mClientInfo.setAppVersion(ClientUtils.getAppVersion(context));// 应用的版本名称
		mClientInfo.setImei(ClientUtils.getIMEI(context));// 手持设备标识号
		mClientInfo.setAppName(ClientUtils.getAppName(context));// 应用名称
		try {
			InputStream in = context.getAssets().open(PROP_FILE_NAME);
			Properties properties = new Properties();
			properties.load(in);
			String aid = properties.getProperty(Constant.HEAD_AID);// 应用id
			String ln = properties.getProperty(Constant.HEAD_LN);// 语言
			String apkPath = properties.getProperty(Constant.APK_PATH);// apk存放在手持端的路径
			String apkUrl = properties.getProperty(Constant.APK_URL);// apk的下载路径
			mClientInfo.setApkUrl(apkUrl);
			mClientInfo.setApkPath(env + apkPath);
			mClientInfo.setAppId(aid);
			mClientInfo.setLanguage(ln);
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取客户端信息 (注:调用该方法前，请确定已经调用过initClientInfo)
	 * 
	 * @return
	 */
	public ClientInfo getClientInfo() {
		return mClientInfo;
	}

	/**
	 * 获取设备信息
	 * 
	 * @param context
	 * @return
	 */
	public JSONObject getDeviceInfo(Context context) {
		try {
			JSONObject jsonObject = new JSONObject();

			if (mClientInfo != null) {
				jsonObject.put(Constant.HEAD_AID, mClientInfo.getAppId());
				jsonObject.put(Constant.HEAD_VER, mClientInfo.getAppVersion());
				jsonObject.put(Constant.HEAD_LN, mClientInfo.getLanguage());
				jsonObject.put(Constant.DEVICE_SID, mClientInfo.getImei());
			}
			jsonObject.put(Constant.DEVICE_MNO, ClientUtils.getPhone(context));// 手机电话号码，有可能为空
			jsonObject.put(Constant.DEVICE_MND, ClientUtils.getModel());// 手机型号
			jsonObject.put(Constant.DEVICE_MOS, ClientUtils.getOs());// 手机操作系统
			jsonObject.put(Constant.DEVICE_SCREENX,
					ClientUtils.getScreenX(context));// 屏幕分辨率x(宽)
			jsonObject.put(Constant.DEVICE_SCREENY,
					ClientUtils.getScreenY(context));// 屏幕分辨率y(高)
			// 设备信息收集
			jsonObject.put(Constant.DEVICE_BLUE_TOOTH,
					ClientUtils.getBluetooth());// 是否有蓝牙
			jsonObject.put(Constant.DEVICE_BRAND, ClientUtils.getBrand());// 手机品牌
			jsonObject.put(Constant.DEVICE_CAMERA, ClientUtils.getCamera());// 是否有摄像头
			jsonObject.put(Constant.DEVICE_CONNECT_TYPE,
					ClientUtils.getConnecttype());// 连接状态-暂时取不到
			jsonObject.put(Constant.DEVICE_CPU_FREQUENCY,
					ClientUtils.getMaxCpuFreq());// CPU最大频率
			jsonObject.put(Constant.DEVICE_CPU_NAME, ClientUtils.getCpuName());// 获取CPU名字
			jsonObject.put(Constant.DEVICE_CODE, ClientUtils.getIMEI(context));// 手机imei号
			jsonObject.put(Constant.DEVICE_GPS, false);
			jsonObject.put(Constant.DEVICE_SID, ClientUtils.getIMEI(context));// 手机imei号
			jsonObject
					.put(Constant.DEVICE_MAC, ClientUtils.getMacPath(context));// 手机wifi的MAC地址
			jsonObject.put(Constant.DEVICE_MAN_FACTURERS,
					ClientUtils.getManufacturers());// 手机制造商
			jsonObject.put(Constant.DEVICE_MEMORY,
					ClientUtils.totalRAM(context));// 内存空间
			jsonObject.put(Constant.DEVICE_MODEL, ClientUtils.getModel());// 手机型号
			jsonObject.put(Constant.DEVICE_NET_TYPE,
					ClientUtils.getNetType(context));// 手机网络制式
			jsonObject.put(Constant.DEVICE_OS, ClientUtils.getOs());// 手机操作系统
			jsonObject.put(Constant.DEVICE_OS_VERSION,
					ClientUtils.getOsVersion());// 操作系统版本
			jsonObject.put(Constant.DEVICE_PHONE_TYPE,
					ClientUtils.phoneType(context));// 手机制式
			jsonObject.put(Constant.DEVICE_SCREEN_X,
					ClientUtils.getScreenX(context));// 屏幕分辨率x(宽)
			jsonObject.put(Constant.DEVICE_SCREEN_Y,
					ClientUtils.getScreenY(context));// 屏幕分辨率y(高)
			jsonObject.put(Constant.DEVICE_SD_EXT,
					ClientUtils.availableBlock(context));
			jsonObject.put(Constant.DEVICE_SD_INT,
					ClientUtils.availableRom(context));// 内部空间可用大小(MB)
			jsonObject.put(Constant.DEVICE_WLAN_SHARE, false);
			return jsonObject;
		} catch (JSONException e) {
			e.printStackTrace();
		}

		return null;
	}

}
